1. Technical Field
The present disclosure relates to redundant array of independent storage device systems in general, and in particular to a flexible method for distributing data and redundancy information across the storage devices to improve the reliability and availability of the system when a pre-defined group of storage devices fail together.
2. Description of Related Art
Redundant Array of Independent Disk (RAID) is a data storage virtualization technology that configures and manages multiple storage devices to improve the reliability, availability, and performance of storing and retrieving data in a storage system. RAID storage systems employ error-control coding techniques appropriate to the reliability of the underlying storage devices and hardware subsystems that control and package the storage devices, such as enclosures, drawers, blades and power subsystems. Example error detection and correction techniques include n-fault-tolerant Reed-Solomon erasure codes and (n+1)-way replication, both of which can correct n faults or erasures in stored data.
Historically, RAID systems have used fixed algorithmic techniques to place data and error correction redundancy information and to reserve spare space (for reconstructing data after faults) on storage devices. Regardless of the RAID level being employed, individual strips constituting the whole of a data stripe are typically spread across different independent disk drives. With data stripes being distributed, the subsequent loss of one or more strips, up to the maximum recoverability of the redundancy, will still allow the whole of the data strip to be reconstructed from the other strips that are present on non-failed disk drives. For example, in a RAID 5 redundancy encoding where a parity strip is lost due to a failed disk drive, the whole of the data strip may be reconstructed by applying well-known recombination techniques of the RAID erasure code against the surviving stripes to reconstruct the whole of the data stripe.
The present disclosure provides an improved method for performing strip placements within a storage system.